簡單來說「函式」指的是將一或多段程式指令包裝起來,可以重複使用,也方便維護。
函式的寫法
基本組合:宣告函式 + 函式名稱
function greet(){
alert('歡迎光臨!');
alert('請問你要吃些什麼?');
}
函式名稱後面有小括號,裡面可以帶入參數。大括號裡放的則是你希望函式做的動作。寫好之後並不會執行,需要執行該函式時,只要呼叫它就可以了。呼叫方式如下:
greet();
上面這種經過宣告而成立的函式稱為命名函式,必須經過呼叫才會執行;而還有另一種函式叫做匿名函式,顧名思義,是不用取名字的,而且位置要放在我們期望它執行的地方,解譯器執行到這一行的時候才會執行,因此也無法另外呼叫它。
乍看之下「變數」不應該放在函式篇,但是以下要談的東西必須搭配函式的概念才比較好理解。讓我們來了解一下全域與區域變數的意涵。
區域變數:寫在函式內的變數稱為區域變數,只在函式內有效,當函式執行完以後就結束了,所以當我們在函式的外面再去查詢的時候是查不到變數值的。
例:
function count(Num){
var total = Num * 8;
}
console.log(total);
若此時在 console 輸出,會出現錯誤
這是因為,我們雖然有宣告變數 total ,但是是在 function 內,作用域也只在 fucntion 內,這就是所謂的區域變數。
全域變數:寫在函式之外稱為全域變數,會被記憶在 window 物件中,但是記憶體會越來越肥,所以還是比較推薦使用區域變數。
今天改變一下 total 變數的位置,如下:
var total;
function count(Num){
alert(hello);
}
console.log(total);
此時輸出會是 undefinded 因為我們宣告了 total 變數,卻還未賦予值。
而 total 會被視為全域變數,因為它的作用域就不只被侷限在 function 內,而是全部的作用域。